1. Field
The embodiments of the present invention relates generally to communication and more specifically to a driver for transmitting packets onto a high speed Ethernet network.
2. Background
Network controllers are used to transmit and receive Ethernet packets from a network media. Ethernet speeds typically include 10 Megabit, 100 Megabit, 1 Gigabit or 10 Gbit per second technologies as described in the ANSI/IEEE 802.3 specifications, published Oct. 2000. The network controller is typically coupled into the bus of a computer. The computer has a processor and host memory. The computer has an operating system that communicates using a software driver to the network card when an application in the computer needs to transfer information onto the network media for distribution to the Internet or other computers.
Operating systems provide indications to a software driver that one or more packets are available for transmission onto a network media. Drivers respond to the operating system by processing each packet by creating a table that contains a location in memory where the packets are stored, as well as the length of the packet. The driver then informs the network controller that the packet is available for fetching and transmission onto the network media. The network controller receives packets from memory and stores the packet in an internal cache. The network controller then transmits the cached packet onto the network media.
The driver typically receives multiple packets from the operating system. In one method, the driver then processes one packet at a time, and then immediately informs the network controller after each packet is processed, that a processed packet is available for transmission. Alternatively in a second method, the driver may process all the packets it has been given, and then informs the controller that all packets are available for transmission.
The first method improves packet latency because the network controller learns about each packet as soon as it is available for transmission. However, this first method has the drawback of reduced bus efficiency, since a bus transaction is required to process each individual packet.
The second method increases bus efficiency because the entire table of packets only requires a single bus transaction to inform the network controller that the packets are available for transmission. However, this method has the drawback of reduced packet latency because the first packet sits idle and is not handled by the network controller until the driver processes the subsequent packets.